上一篇 run() planeDetection 為水平, 接下來將利用從ARSCNViewDelegate protocol獲取到平面資訊
sceneView?.delegate = self
ARPlaneAnchors 將會自動被加到 ARSession anchors 陣列,然後ARSCNView 將會自動將ARPlaneAnchor objects 轉成 SCNNode nodes
extension PortalViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
DispatchQueue.main.async {
if let planeAnchor = anchor as? ARPlaneAnchor {
#if DEBUG
let debugPlaneNode = createPlaneNode(
center: planeAnchor.center,
extent: planeAnchor.extent)
node.addChildNode(debugPlaneNode)
#endif
} }
}
}
這個方法會在 ARSCNView 自動增加 ARPlaneAnchor 時被執行, 然後確定被加入的 ARAnchor 為 ARPlaneAnchor, 最後在Debug Mode 下 添加 debugPlaneNode 與 node 在相同位置上